home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 March / macformat-022.iso / Shareware City / Developers / src / brailler-04b-c / brlr ƒ / Shell ƒ / window layer.h < prev   
Encoding:
C/C++ Source or Header  |  1994-11-23  |  5.6 KB  |  116 lines  |  [TEXT/R*ch]

  1. #if 0
  2.  
  3. Usage notes:
  4. - MyNewWindow or MyNewCWindow with all the standard parameters to create a
  5.   new window in the document layer.
  6. - MyNewFloatWindow or MyNewCFloatWindow with all the standard parameters to
  7.   create a new window in the floating layer.
  8. - MySelectWindow(theWindowPtr) to select a window in any layer
  9. - MyDisposeWindow(theWindowPtr) to dispose of a window in any layer
  10.  
  11. - Call InitTheWindowLayer(void) once at program startup before creating any
  12.   windows in any layer.
  13. - New windows are automatically visible and frontmost in their layer.  Storage
  14.   must be allocated (sizeof(ExtendedWindowRec)) and passed to any window creation
  15.   routine.
  16. - You should only dispose of the frontmost window in a layer.
  17.  
  18. #endif
  19.  
  20.  
  21. #ifndef __WINDOW_LAYER_H__
  22. #define __WINDOW_LAYER_H__
  23.  
  24. typedef struct
  25. {
  26.     WindowRecord    docWindow;                /* window record */
  27.     unsigned long    magic;                    /* magic number to see if window is ours */
  28.     short            layer;                    /* layer number */
  29.     WindowPtr        nextWindow;                /* next window in layer (further from front) */
  30.     WindowPtr        previousWindow;            /* previous window in layer (closer to front) */
  31.     short            windowIndex;            /* index of window in program's window list */
  32.     short            windowWidth;            /* width of window content, in pixels */
  33.     short            windowHeight;            /* height of window content, in pixels */
  34.     short            windowType;                /* type of window */
  35.     short            windowDepth;            /* current pixel depth of window */
  36.     short            maxDepth;                /* maximum pixel depth of window */
  37.     Boolean            hasCloseBox;            /* window has a close box */
  38.     Boolean            autoCenter;                /* auto center window in main screen when opened */
  39.     Boolean            isFloat;                /* is floating window? */
  40.     Boolean            modified;
  41.     Point            initialTopLeft;            /* initial window bounds when opened */
  42.     Rect            windowBounds;            /* on screen rectangle of window content */
  43.     ControlHandle    vScroll;                /* window's vertical scroll bar */
  44.     ControlHandle    hScroll;                /* window's horizontal scroll bar */
  45.     TEHandle        hTE;                    /* window's TextEdit handle */
  46.     Str63            title;                    /* window title */
  47.     FSSpec            fs;
  48. } ExtendedWindowRec, *ExtendedWindowPtr;
  49.  
  50. #define GetWindowIndex(w)                (((ExtendedWindowPtr)w)->windowIndex)
  51. #define GetWindowWidth(w)                (((ExtendedWindowPtr)w)->windowWidth)
  52. #define GetWindowHeight(w)                (((ExtendedWindowPtr)w)->windowHeight)
  53. #define GetWindowType(w)                (((ExtendedWindowPtr)w)->windowType)
  54. #define GetWindowDepth(w)                (((ExtendedWindowPtr)w)->windowDepth)
  55. #define GetWindowMaxDepth(w)            (((ExtendedWindowPtr)w)->maxDepth)
  56. #define WindowHasCloseBoxQQ(w)            (((ExtendedWindowPtr)w)->hasCloseBox)
  57. #define WindowAutoCenterQQ(w)            (((ExtendedWindowPtr)w)->autoCenter)
  58. #define WindowIsFloatQQ(w)                (((ExtendedWindowPtr)w)->isFloat)
  59. #define WindowIsModifiedQQ(w)            (((ExtendedWindowPtr)w)->modified)
  60. #define GetWindowTopLeft(w)                (((ExtendedWindowPtr)w)->initialTopLeft)
  61. #define GetWindowBounds(w)                (((ExtendedWindowPtr)w)->windowBounds)
  62. #define GetWindowVScrollBar(w)            (((ExtendedWindowPtr)w)->vScroll)
  63. #define GetWindowHScrollBar(w)            (((ExtendedWindowPtr)w)->hScroll)
  64. #define GetWindowTE(w)                    (((ExtendedWindowPtr)w)->hTE)
  65. #define GetWindowTitle(w)                (((ExtendedWindowPtr)w)->title)
  66. #define GetWindowFS(w)                    (((ExtendedWindowPtr)w)->fs)
  67.  
  68. #define SetWindowIndex(w,x)                { ((ExtendedWindowPtr)w)->windowIndex=x; }
  69. #define SetWindowWidth(w,x)                { ((ExtendedWindowPtr)w)->windowWidth=x; }
  70. #define SetWindowHeight(w,x)            { ((ExtendedWindowPtr)w)->windowHeight=x; }
  71. #define SetWindowType(w,x)                { ((ExtendedWindowPtr)w)->windowType=x; }
  72. #define SetWindowDepth(w,x)                { ((ExtendedWindowPtr)w)->windowDepth=x; }
  73. #define SetWindowMaxDepth(w,x)            { ((ExtendedWindowPtr)w)->maxDepth=x; }
  74. #define SetWindowHasCloseBox(w,x)        { ((ExtendedWindowPtr)w)->hasCloseBox=x; }
  75. #define SetWindowAutoCenter(w,x)        { ((ExtendedWindowPtr)w)->autoCenter=x; }
  76. #define SetWindowIsFloat(w,x)            { ((ExtendedWindowPtr)w)->isFloat=x; }
  77. #define SetWindowIsModified(w,x)        { ((ExtendedWindowPtr)w)->modified=x; }
  78. #define SetWindowTopLeft(w,x)            { ((ExtendedWindowPtr)w)->initialTopLeft=x; }
  79. #define SetWindowBounds(w,x)            { ((ExtendedWindowPtr)w)->windowBounds=x; }
  80. #define SetWindowVScrollBar(w,x)        { ((ExtendedWindowPtr)w)->vScroll=x; }
  81. #define SetWindowHScrollBar(w,x)        { ((ExtendedWindowPtr)w)->hScroll=x; }
  82. #define SetWindowTE(w,x)                { ((ExtendedWindowPtr)w)->hTE=x; }
  83. #define SetWindowTitle(w,x)                { BlockMove(x, (((ExtendedWindowPtr)w)->title), x[0]+1); }
  84. #define SetWindowFS(w,x)                { ((ExtendedWindowPtr)w)->fs=x; }
  85.  
  86. #define IndWindowExistsQQ(x)        (GetIndWindowPtr(x)!=0L)
  87. #define WindowExistsQQ(w)            (w!=0L)
  88.  
  89. extern    Boolean            gIgnoreNextActivateEvent;
  90.  
  91. /* necessary routines */
  92. void InitTheWindowLayer(void);
  93. void ShutDownTheWindowLayer(void);
  94. WindowPtr MyNewWindow(void *wStorage, const Rect *boundsRect, ConstStr255Param title,
  95.     Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon);
  96. WindowPtr MyNewCWindow(void *wStorage, const Rect *boundsRect, ConstStr255Param title,
  97.     Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon);
  98. WindowPtr MyNewFloatWindow(void *wStorage, const Rect *boundsRect, ConstStr255Param title,
  99.     Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon);
  100. WindowPtr MyNewFloatCWindow(void *wStorage, const Rect *boundsRect, ConstStr255Param title,
  101.     Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon);
  102. void MyDisposeWindow(WindowPtr window);
  103. Boolean MySelectWindow(WindowPtr window);
  104.  
  105. /* useful abstract routines for working with windows */
  106. Boolean WindowHasLayer(WindowPtr window);
  107. Boolean WindowIsFloat(WindowPtr window);
  108. WindowPtr GetFrontDocumentWindow(void);
  109. WindowPtr GetIndWindowPtr(short index);
  110.  
  111. /* useful patches */
  112. void InstallHilitePatch(void);
  113. void RemoveHilitePatch(void);
  114.  
  115. #endif
  116.